package kim.artemis.rpc.core.registry;

import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

/**
 * 服务注册抽象类
 */
public abstract class ServiceRegistry {

    /**
     * 开始服务
     * @param address
     */
    public abstract void start (String address);

    /**
     * 停止服务
     */
    public abstract void stop ();

    /**
     * 注册服务
     * @param keys
     * @param value
     * @return
     */
    public abstract boolean register (Set<String> keys, String value);

    /**
     * 删除服务
     * @param keys
     * @param value
     * @return
     */
    public abstract boolean remove (Set<String> keys, String value);

    /**
     * 删除服务
     * @param value
     * @return
     */
    public abstract boolean remove (String value);

    /**
     * 发现服务
     * @param keys
     * @return
     */
    public abstract Map<String, TreeSet<String>> discovery (Set<String> keys);

    /**
     * 发现服务
     * @param key
     * @return
     */
    public abstract TreeSet<String> discovery (String key);
}
